package UserInterface;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import Control.Functionality;
public class OperationsPanel extends JPanel {
private static final long serialVersionUID = 3497899707272338816L;
/// 4 panels for different areas of the main frame//////////////////////////////////////////
private JPanel polynomPanel = new JPanel();
private JPanel preferencesPanel = new JPanel();
private JPanel simpleOperations = new JPanel();
private JPanel complexOperations = new JPanel();
//////fields and labels for displaying the polynomials that we perform operations on////////
private JTextField mainPolynomField = new JTextField(25);
private JLabel mainPolynomLabel = new JLabel("Main Polynomial P(X):");
private JTextField secondaryPolynomField = new JTextField(25);
private JLabel secondaryPolynomLabel = new JLabel("Secondary Polynomial Q(X):");
///buttons for user interaction///////////////////////////////////////////////////////////////
private CustomizedButton addPolynomial = new CustomizedButton("Input Polynomial Q(X)"); // 1
private CustomizedButton clear = new CustomizedButton("Clear Screen"); // 2
private CustomizedButton addition = new CustomizedButton("P(X) + Q(X)"); // 3
private CustomizedButton subtraction = new CustomizedButton("P(X) - Q(X)"); // 4
private CustomizedButton multiplication = new CustomizedButton("P(X) * Q(X)"); // 5
private CustomizedButton division = new CustomizedButton("P(X) / Q(X)"); // 6
private CustomizedButton findRoots = new CustomizedButton("Find Roots"); // 7
private CustomizedButton differentiate = new CustomizedButton("Differentiate"); // 8
private CustomizedButton integrate = new CustomizedButton("Integrate"); // 9
private CustomizedButton valueAtPoint = new CustomizedButton("Value at a given point"); // 10
//// fonts for labels and 'function' object for the actions performed by buttons////////////////
private Functionality function = new Functionality();
private Fonts fonts = new Fonts();
public OperationsPanel() {
giveFunctionsToButtons();
setBackground(Color.GRAY);
/// setting main panel////////////////////////////////////////////////
setLayout(new GridLayout(4, 1));
/// create Polynomial panel//////////////////////////////////////////
polynomPanel.setBackground(Color.LIGHT_GRAY);
polynomPanel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 0.5;
gbc.weighty = 0.5;
gbc.gridy = 0;
gbc.gridx = 0;
polynomPanel.add(mainPolynomLabel, gbc);
gbc.gridx = 1;
mainPolynomField.setText(function.createStringIntPolynomial(function.createMainPolynomial()));
mainPolynomField.disable();
mainPolynomField.setDisabledTextColor(Color.CYAN);
mainPolynomField.setFont(fonts.getInputFont());
mainPolynomField.setBackground(Color.GRAY);
polynomPanel.add(mainPolynomField, gbc);
gbc.gridy = 1;
gbc.gridx = 0;
polynomPanel.add(secondaryPolynomLabel, gbc);
gbc.gridx = 1;
secondaryPolynomField.disable();
secondaryPolynomField.setDisabledTextColor(Color.CYAN);
secondaryPolynomField.setFont(fonts.getInputFont());
secondaryPolynomField.setBackground(Color.GRAY);
polynomPanel.add(secondaryPolynomField, gbc);
add(polynomPanel);
/// create preferences panel///////////////////////////////////////////
preferencesPanel.setBackground(Color.GRAY);
preferencesPanel.setLayout(new GridBagLayout());
gbc.gridx = 0;
preferencesPanel.add(addPolynomial, gbc);
gbc.gridx = 1;
preferencesPanel.add(clear, gbc);
add(preferencesPanel);
/// create panel for arithmetical operations/////////////////////////
simpleOperations.setBackground(Color.LIGHT_GRAY);
simpleOperations.setLayout(new GridBagLayout());
gbc.gridy = 0;
gbc.gridx = 0;
simpleOperations.add(addition, gbc);
gbc.gridx = 1;
simpleOperations.add(subtraction, gbc);
gbc.gridx = 2;
simpleOperations.add(multiplication, gbc);
gbc.gridx = 3;
simpleOperations.add(division, gbc);
add(simpleOperations);
/// create panel for complex operations////////////////////////////////
complexOperations.setBackground(Color.GRAY);
complexOperations.setLayout(new GridBagLayout());
gbc.gridy = 0;
gbc.gridx = 0;
complexOperations.add(differentiate, gbc);
gbc.gridx = 1;
complexOperations.add(integrate, gbc);
gbc.gridy = 1;
gbc.gridx = 0;
complexOperations.add(valueAtPoint, gbc);
gbc.gridx = 1;
complexOperations.add(findRoots, gbc);
add(complexOperations);
}
public void giveFunctionsToButtons() {
addPolynomial.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
function.activateInputSecondPolynomial();
secondaryPolynomField.setText(function.createStringIntPolynomial(function.getSecondaryPolynomial()));
}
});
clear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
function.activateClearScreen();
}
});
valueAtPoint.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
function.activateValueAtPoint();
}
});
findRoots.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
function.activateFindRoots();
}
});
addition.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (function.getSecondaryPolynomial() != null)
function.activatePolynomialAddition();
}
});
subtraction.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (function.getSecondaryPolynomial() != null)
function.activatePolynomialSubtraction();
}
});
multiplication.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (function.getSecondaryPolynomial() != null)
function.activatePolynomialMultiplication();
}
});
division.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
if(function.getSecondaryPolynomial() != null)
function.activatePolynomialDivision();
}
});
differentiate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
function.activatePolynomialDifferentiation();
}
});
integrate.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
function.activatePolynomialIntegration();
}
});
}
}